
package com.jf.cloud.live.service;

import com.jf.cloud.common.database.dto.PageDTO;
import com.jf.cloud.common.database.vo.PageVO;
import com.jf.cloud.live.dto.LiveRoomDTO;
import com.jf.cloud.live.model.LiveRoom;
import com.jf.cloud.live.vo.LiveRoomVO;
import me.chanjar.weixin.common.error.WxErrorException;

/**
 * 直播间
 *
 * @author zz
 * @date 2022-08-17 17:09:06
 */
public interface LiveRoomService {

    /**
     * 分页获取直播间列表
     * @param pageDTO 分页参数
     * @return 直播间列表分页数据
     */
    PageVO<LiveRoom> page(PageDTO pageDTO, LiveRoom liveRoom);

    /**
     * 根据直播间id获取直播间
     *
     * @param id 直播间id
     * @return 直播间
     */
    LiveRoom getById(Long id);

    /**
     * 保存直播间
     * @param liveRoom 直播间
     */
    void save(LiveRoom liveRoom);

    /**
     * 更新直播间
     * @param liveRoom 直播间
     */
    void update(LiveRoom liveRoom);

    /**
     * 根据直播间id删除直播间
     * @param id 直播间id
     */
    void deleteById(Long id);

    /**
     * 获取置顶的直播间个数
     * @return
     */
    int countTopRoom();

    /**
     * 删除直播间
     * @param id
     * @param shopId
     */
    Boolean removeRoomById(Long id, Long shopId) throws WxErrorException;

    /**
     * 同步微信的直播间信息
     * @throws WxErrorException 微信异常
     */
    void synchronousWxLiveRoom();

    /**
     * 保存直播间信息
     * @param liveRoom 直播间信息
     * @throws WxErrorException 微信异常
     */
    void saveLiveRoom(LiveRoom liveRoom);

    /**
     * 获取直播间详细信息
     * @param pageDTO 分页信息
     * @param liveRoom 直播间信息
     * @return 直播间信息
     */
    PageVO<LiveRoomVO> pageRoomAndDetail(PageDTO pageDTO, LiveRoomDTO liveRoom);
}
